package com.qzct.service;

import com.mybatisflex.core.service.IService;

import com.qzct.entity.MinioFile;
import com.qzct.entity.MyBucket;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 *  服务层。
 *
 * @author 沈舜洁
 * @since 2024-12-25
 */
public interface MinioFileService extends IService<MinioFile> {

    /**
     * 存储桶是否存在
     *
     * @param bucketName 存储桶名称
     * @return boolean
     */
    boolean bucketExists(String bucketName);


    /**
     * 获取文件信息
     *
     * @param fileName 存储桶文件名称
     * @return InputStream
     */
    MinioFile getOssInfo(String fileName);

    /**
     * 上传文件
     *
     * @param folderName 上传的文件夹名称
     * @param fileName   上传文件名
     * @param file       上传文件类
     * @return MinioFile
     */
    MinioFile upLoadFile(String folderName, String fileName, MultipartFile file,String catename,Integer cateid,Integer albumid);

    /**
     * 上传文件
     *
     * @param folderName 上传的图片夹名称
     * @param fileName   上传图片名
     * @param file       上传图片类
     * @return MinioFile
     */
    MinioFile upLoadImg(String folderName, String fileName, MultipartFile file,String catename,Integer cateid,Integer albumid);
    /**
     * 删除文件
     *
     * @param fileName 存储桶对象名称
     */
    boolean removeFile(String fileName);

    /**
     * 批量删除文件
     *
     * @param fileNames 存储桶对象名称集合
     */
    boolean removeFiles(List<String> fileNames);

    /**
     * @Description: 下载文件
     * @Param response: 响应
     * @Param fileName: 文件名
     * @Param filePath: 文件路径
     * @return: void
     */
    void downloadFile(HttpServletResponse response, String fileName, String filePath);

    /**
     * 获取所有Buckets
     * @return
     */

    List<MyBucket> findAllBuckets() throws Exception;

}
